<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // find()从数组中找到满足条件的第一个元素并且并返回它。否则返回undefined。
        // some()在数组中找到满足条件的第一个元素并且返回true或者false。
        // findIndex()返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。

        /* 
            需求：从一组用户当中找到姓名为张三的用户，获得该用户的年龄。
         */
        //在该数组当中存放对象
        const names = [
            {name:"张三",age:22},
            {name:"李四",age:23},
            {name:"赵六",age:24},
            {name:"张三",age:32}
         ];

        // 方式一
        let result1 = "";
        for(let obj of names){
            if(obj.name === '张三'){
                result1 = obj.age;
            }
        }
        console.log(result1);

        console.log("===============");

        // 方式二
        // 代码优化，解耦，将比较的方法提出，循环调用
        function isName(obj){
            return obj.name==="张三";
        }
        let result2 = false;
        for(let obj of names){
            if(isName(obj)){
                result2 = true;
            }
        }
        console.log(result2);

        console.log("===============");

        // 方式三
        // 直接调用find()方法 
        
        console.log(names.find(isName));//返回的是整个对象

        console.log("===============");

        // 方式四
        console.log(names.find(obj => obj.name === '张三'));

        console.log("===============");

        // 例子，找到大于50的值并返回
        const arrays1 = [11,5,123,55,1,1,5,66,11];

        // 方式一
        for(var i = 0;i < arrays1.length; i++){
            if(arrays1[i] > 50){
                console.log(arrays1[i]);
            }
        }

        console.log("===============");

        // 方式二
        console.log(arrays1.find(val => val > 50));
        console.log("===============");

        /* 
            需求：只需要返回true或者false就可以了，就是有没有满足条件的用户
        */
        
        console.log(names.some(obj => obj.name === '张三'));
        console.log("===============");

        /* 
            需求：从一组用户当中找到姓名为张三的用户，并返回它的index
        */

        const objIndex = names.findIndex(obj => obj.name ==='张三');
        console.log(objIndex);


    </script>
</head>
<body>
    
</body>
</html>